import com.demo.component.ArticleController;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;


public class App {
    public static void main(String[] args) {
        // 1.得到 Spring 对象; Ps:懒汉加载
//        BeanFactory context = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
//        System.out.println("这里初始化了context");
        // 1.得到 Spring 对象(Spring上下文) Ps:饿汉加载
        ApplicationContext context =
                new ClassPathXmlApplicationContext("spring-config.xml");
//        // 2.从 Spring 中取出 Bean 对象(这里会返回一个Object类型。所以需要强转)
//        //User user = (User)context.getBean("user");//此方法如果bean不存在，那么在强制类型转换的时候就会报null异常
//        //User user = context.getBean(User.class);//这个方法如果多次注入相同的bean，就会引发找不到bean的异常
//        User user = context.getBean("user", User.class);//最主流，最安全的方法
//        // 3.使用 Bean 对象
//        System.out.println(user.sayHi());
        //默认类名小写为id
        ArticleController articleController = context.getBean("articleController",
                ArticleController.class);
    }
}
